package proxy.jdk_proxy;

import com.google.common.collect.Lists;
import proxy.Animal;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.ArrayList;

/**
 * Created by 张启磊 on 2019-6-4.
 * 动态代理类 demo
 */
public class ProxyHandler implements InvocationHandler {
    /**
     * 被代理对象
     */
    private Animal animal;


    public ProxyHandler ( Animal animal){
        this.animal=animal;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //逻辑增强
        System.out.println("准备动态代理");
        //当被代理对象不需要方法执行的时候，可以不用调用
        Object invoke = method.invoke(animal, args);
        //逻辑增强
        System.out.println("动态代理结束");
        return null;
    }
}
